//比赛中的配对次数
/*给你一个整数 n ，表示比赛中的队伍数。比赛遵循一种独特的赛制：

如果当前队伍数是 偶数 ，那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛，且产生 n / 2 支队伍进入下一轮。
如果当前队伍数为 奇数 ，那么将会随机轮空并晋级一支队伍，其余的队伍配对。总共进行 (n - 1) / 2 场比赛，且产生 (n - 1) / 2 + 1 支队伍进入下一轮。
返回在比赛中进行的配对次数，直到决出获胜队伍为止。
1 <= n <= 200
*/
int numberOfMatches(int n) {
    int count = 0;
    while (n != 1) {
        if (n % 2) {
            count += (n - 1) / 2;
            n = (n - 1) / 2 + 1;
        } else {
            count += n / 2;
            n /= 2;
        }
    }
    return count;
}


//三除数
/*给你一个整数 n 。如果 n 恰好有三个正除数 ，返回 true ；否则，返回 false 。

如果存在整数 k ，满足 n = k * m ，那么整数 m 就是 n 的一个 除数 。
1 <= n <= 104
*/
bool find(int n) {
    int sql = (int)sqrt(
        1.0 * n); // 1.0*n的目的是  隐式转换成浮点数，开根号后再强制转换成整型
    for (int i = 2; i <= sql; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
bool isThree(int n) {
    if (n != 1 && sqrt(1.0 * n) == (int)sqrt(1.0 * n) &&
        find((int)sqrt(1.0 * n))) 

        return true;
    
    return false;
}